Androidでインストール時のリファラ情報を取得する
Google Playからのダウンロード・インストール時に処理をする
Androidではアプリケーションのインストール時に指定したレシーバーを動作させ、任意の処理を行うことができます。 また、URLパラメータを使用することも可能なので、リファラ情報を設定すればどこからGoogle Playへ来たのかを知ることも可能です。 今回はAndroidでリファラ情報を取得してみます。
環境構築
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.4
- Eclipse : 4.2
- Android : 4.0.3
通常のAndroidプロジェクトを作成して試してみます。 今回はFile > New > Android Application Projectを選択し、プロジェクトを作成しました。
サンプルアプリケーションの作成
Google Playからのインストール時にログを出力するだけの簡単なサンプルを作成します。 まずはアプリケーションの起動時に実行されるレシーバーを作成します。
package jp.cm.receiver import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class RefReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String referrer = intent.getStringExtra("referrer"); Log.d("[REFERRER]",referrer); } }
BroadcastReceiverを継承してレシーバーを作成します。 アプリケーションのインストール時に起動するレシーバーは、必ずreferrerパラメータを持っているので、 その値を出力しています。 次にAndroidManifest.xmlを編集します。
<receiver android:name="jp.cm.receiver.RefReceiver" android:exported="true" > <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" > </action> </intent-filter> </receiver>
receiverタグに先ほど作成したレシーバーを指定します。 intent-filterにはcom.android.vending.INSTALL_REFERRERを指定しなければいけません。 これでGoogle Playからのインストール時にRefReceiverが実行されるようになりました。
エミュレータでINSTALL_REFERRERのテスト
このレシーバーをテストするためにわざわざGoogle Playにアップロードするのは面倒なので、ローカルで動かしたいところです。 このレシーバーをエミュレータで動作させるには、adbコマンドを使用して擬似的にブロードキャストを送出します。
% adb shell am broadcast -a com.android.vending.INSTALL_REFERRER --es referrer hello
リファラ情報を付けてGoogle Playへのリンクを貼る
htmlでGoogle Play上のアプリケーションへのリンクの貼り方です。 通常のhttpから始まる形式と、Android用にスキーマ形式を使用する方法があります。
<p>referrer test1</p> <a href="http://play.google.com/store/apps/details?id=<your application package>&referrer=hello">link1</a> <p>referrer test2</p> <a href="market://details?id=<your application package>&referrer=hello">link2</a>